CouchDB একটি ওপেন সোর্স NoSQL ডাটাবেস যা ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা এবং অ্যাক্সেস নিয়ন্ত্রণের জন্য User Management এবং Role-based Access Control (RBAC) ব্যবস্থাপনা সমর্থন করে। এই ব্যবস্থাগুলি CouchDB এর ব্যবহারকারীদের এবং তাদের অ্যাক্সেসের জন্য শক্তিশালী নিয়ন্ত্রণ প্রদান করে।
1. User Management in CouchDB
CouchDB-তে User Management পদ্ধতি ব্যবহারকারীদের তৈরি, আপডেট, মুছে ফেলা এবং তাদের তথ্য পরিচালনা করার সুযোগ দেয়। CouchDB তে ব্যবহারকারীদের admin এবং regular users হিসেবে শ্রেণিবদ্ধ করা হয়।
ব্যবহারকারীদের তৈরি এবং পরিচালনা:
CouchDB-তে ব্যবহারকারী তৈরি করার জন্য HTTP API ব্যবহার করা হয়। এই API-র মাধ্যমে নতুন ব্যবহারকারী তৈরি করা যায় এবং তাদের জন্য পাসওয়ার্ড এবং ভূমিকা (roles) নির্ধারণ করা যায়।
ব্যবহারকারী তৈরি করা:
নতুন ব্যবহারকারী তৈরি করতে হলে _users ডাটাবেসে POST রিকুয়েস্ট পাঠানো হয়। নতুন ব্যবহারকারী তৈরি করার সময় তাদের username, password, এবং roles (যদি থাকে) প্রদান করতে হবে।
HTTP Request:
POST /_users/org.couchdb.user:username
Request Body (JSON):
{
"_id": "org.couchdb.user:john_doe",
"name": "john_doe",
"password": "securepassword",
"roles": ["admin", "editor"]
}
Response:
যদি সফল হয়, একটি JSON অবজেক্ট রিটার্ন হবে যা ব্যবহারকারী তৈরি হওয়ার প্রমাণ হবে:
{
"ok": true,
"id": "org.couchdb.user:john_doe",
"rev": "1-xxx"
}
2. Role-based Access Control (RBAC)
Role-based Access Control (RBAC) একটি নিরাপত্তা কৌশল যা ব্যবহারকারীদের তাদের ভূমিকা (roles) অনুযায়ী বিভিন্ন অ্যাক্সেস প্রদান করে। CouchDB-তে, ব্যবহারকারীরা বিভিন্ন roles এর অধীনে কাজ করতে পারে, যা তাদের বিভিন্ন ডেটাবেসে এবং ডকুমেন্টে কী ধরনের অ্যাক্সেস থাকবে তা নির্ধারণ করে।
Roles:
- admin: Admins বা অ্যাডমিন ব্যবহারকারীরা ডেটাবেসের সমস্ত কার্যকলাপে অ্যাক্সেস এবং সম্পূর্ণ নিয়ন্ত্রণ রাখে, যেমন ডেটাবেস তৈরি, ডিলিট, এবং অন্যান্য নিরাপত্তা সেটিংস পরিবর্তন।
- editor: Editors সাধারণত ডেটাবেসে ডকুমেন্ট তৈরি, পড়া এবং আপডেট করতে পারে, কিন্তু তারা ডেটাবেসের নিরাপত্তা বা অ্যাক্সেস নিয়ন্ত্রণ পরিবর্তন করতে পারে না।
- reader: Readers শুধুমাত্র ডকুমেন্ট পড়তে পারে, কিন্তু তারা ডেটাবেসে কিছু পরিবর্তন করতে পারে না।
RBAC কনফিগারেশন:
- Admin Role:
- Admins-দের পুরো CouchDB সিস্টেম এবং সমস্ত ডেটাবেসে পূর্ণ অ্যাক্সেস থাকবে।
- Custom Roles:
- কাস্টম ভূমিকা তৈরি করে নির্দিষ্ট ডেটাবেস বা ডকুমেন্টের উপর অ্যাক্সেস নিয়ন্ত্রণ করা যায়।
নির্দিষ্ট ডেটাবেসে Role-Based Permissions:
CouchDB-তে ডেটাবেস এবং ডকুমেন্টের নিরাপত্তা পরিচালনার জন্য security object ব্যবহার করা হয়। আপনি একটি ডেটাবেসের _security ডকুমেন্টে readers এবং writers ভূমিকা নির্ধারণ করতে পারেন।
HTTP Request:
GET /my_database/_security
Request Body (Security Object):
{
"admins": {
"names": ["admin_user"],
"roles": ["admin"]
},
"readers": {
"names": ["john_doe"],
"roles": ["reader"]
},
"writers": {
"names": ["john_doe"],
"roles": ["editor"]
}
}
এখানে:
- admins: অ্যাডমিনদের নাম এবং ভূমিকা প্রদান করা হয়েছে।
- readers: যারা শুধুমাত্র ডকুমেন্ট পড়তে পারবে।
- writers: যারা ডকুমেন্ট লিখতে এবং আপডেট করতে পারবে।
Response:
{
"admins": {
"names": ["admin_user"],
"roles": ["admin"]
},
"readers": {
"names": ["john_doe"],
"roles": ["reader"]
},
"writers": {
"names": ["john_doe"],
"roles": ["editor"]
}
}
3. Admin Functions vs Regular Users
- Admins: CouchDB এর admin ব্যবহারকারীরা সমস্ত সিস্টেম কার্যক্রম পরিচালনা করতে সক্ষম, যেমন ডেটাবেস তৈরি করা, সিস্টেম কনফিগারেশন পরিবর্তন করা এবং অন্যান্য নিরাপত্তা কার্যক্রম।
- Regular Users: সাধারণ ব্যবহারকারীরা শুধুমাত্র তাদের জন্য নির্ধারিত ভূমিকা অনুযায়ী ডেটাবেসে অ্যাক্সেস পাবে। তারা admins দ্বারা অনুমোদিত না হলে, ডেটাবেস এবং ডকুমেন্টে অ্যাক্সেস পরিবর্তন বা সুরক্ষা সেটিংস পরিবর্তন করতে পারবে না।
4. Security Best Practices
- Secure Passwords:
- ব্যবহারকারীদের শক্তিশালী পাসওয়ার্ড ব্যবহার নিশ্চিত করা উচিত। CouchDB তে পাসওয়ার্ড hashed আকারে সংরক্ষিত হয়।
- Limit Access:
- সর্বদা readers এবং writers ভূমিকা নির্ধারণ করুন যাতে ব্যবহারকারীরা শুধুমাত্র তাদের প্রয়োজনীয় অ্যাক্সেস পায়।
- Use Admins Sparingly:
- Admins ভূমিকা খুব কম ব্যবহারকারীর কাছে প্রদান করুন এবং তাদের অ্যাক্সেস সীমাবদ্ধ রাখুন।
- Encrypt Communications:
- CouchDB সার্ভারের সাথে SSL/TLS encryption ব্যবহার করুন যাতে ডেটা সুরক্ষিত থাকে।
সারাংশ
User Management এবং Role-based Access Control (RBAC) CouchDB এর নিরাপত্তা ব্যবস্থার অন্যতম গুরুত্বপূর্ণ অংশ। এটি ব্যবহারকারীদের ভূমিকা এবং অ্যাক্সেস নিয়ন্ত্রণ করতে সাহায্য করে, যা ডেটাবেসের নিরাপত্তা বজায় রাখে এবং অনুমোদিত ব্যবহারকারীদের প্রয়োজনীয় অ্যাক্সেস দেয়। CouchDB তে admins এবং regular users ভূমিকা অনুযায়ী বিভিন্ন readers, writers এবং admins নির্ধারণ করে ডেটাবেসের অ্যাক্সেস নিয়ন্ত্রণ করা হয়।
Read more